package com.woniuxy.hrp.service;

import com.woniuxy.hrp.entity.Patient;
import com.woniuxy.hrp.entity.Reservation;
import com.woniuxy.hrp.exception.PatientRepeatAccEmailPhoneException;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @Description：
 * @Author：曹杰克
 * @CreateTime：2022/8/29 20:19
 * --ffs 增加code 0904
 */

public interface PatientService {
    /**
     * 患者通过id获取个人信息
     * @param id
     * @return
     */
    public Patient getById(int id);

    /**
     * 查询所有患者
     * @Author: WY
     * @return
     */
    List<Patient> getAll();

    /**
     * 查询所有患者
     * @Author: WY
     * @return
     */
    void unlock(int id);

    /**
     * 修改个人信息（密码、邮箱、电话......）
     * @param patient
     */
    public void updateByCondition(Patient patient);
    /**
     * desc:修改密码
     * @Author: caojieke
     * @Date: 2022/8/30 15:20
     */
    public void updatePassWord(Patient patient);

    /**
     * desc:患者账号锁定(冻结)
     * @Author: WY
     * @Date: 2022/8/30
     */
    void lock(int id);

    /**
     * 新患者注册
     * 注册的时候默认状态为U：未激活，并且调用邮件服务发送激活码到邮箱
     * @param patient
     * @Author: shanshanfan
     * @return
     */
     void register(Patient patient);

//    /**
//     * 点击邮箱中的激活码code进行激活，根据激活码查询患者，之后再进行修改患者状态为Y进行激活
//     * 状态：U-未激活邮箱，默认状态 Y-激活成功 F-冻结
//     * @param code
//     * @Author: shanshanfan
//     * @return
//     */
//     Patient checkCode(String code);

    /**
     * 激活患者账户，修改患者账号状态为“Y”进行激活
     * @param patient
     * @Author: shanshanfan
     * @return
     */
    void updatePatientStatus(Patient patient);


    /**
     * 患者登录,根据用户状态为“Y”来查询
     * @param patient
     * @Author: shanshanfan
     * @return
     */
    Patient loginPatient(Patient patient);



    /**
     * 查询预约信息（按条件查询） 连预约信息表
     * 预约信息表中状态：T-待完成的预约 D-已完成预约 U-未付款的预约
     *
     * @param status
     * @author shanshanfan
     * @return List<Reservation>
     */
    List<Reservation> getReservationByStatus(String status);


}
